package cn.iocoder.yudao.module.indicator.service.element;

import cn.iocoder.yudao.module.indicator.dao.element.ElementMonthDao;
import cn.iocoder.yudao.module.indicator.domain.dto.IndexCalculationDto;
import cn.iocoder.yudao.module.indicator.domain.vo.ElementCalculationVo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Description 元素天表查询处理
 * @Author ZWC
 * @Date 2024/9/26 15:53
 */
@Service
public class ElementMonthServiceImpl implements ElementCalculationService {

    @Resource
    private ElementMonthDao elementMonthDao;

    private Boolean checkDateType(IndexCalculationDto indexCalculationDto){
        String DATE_TYPE = "日,月,年";
       return DATE_TYPE.contains(indexCalculationDto.getDateType());
    }

    /**
     * 功能描述: 获取元素值[获取这个指标值]
     * @Param:
     * @Return:
     * @Author: ZWC
     * @Date: 2024/9/26
     */
    @Override
    public List<ElementCalculationVo> getElementById(IndexCalculationDto indexCalculationDto){
        //校验时间类型是否支持
        if (checkDateType(indexCalculationDto)) {
            return elementMonthDao.getElementByDate(indexCalculationDto);
        }
        return DEFAULT_LIST;
    }

    /**
     * 功能描述: 获取机构 元素值明细  [获取这个指标的机构明细数据]
     * @Param:
     * @Return:
     * @Author: ZWC
     * @Date: 2024/9/26
     */
    public List<ElementCalculationVo> getElementGroupInstitute(IndexCalculationDto indexCalculationDto){
        //校验时间类型是否支持
        if (checkDateType(indexCalculationDto)) {
            return elementMonthDao.getElementGroupInstitute(indexCalculationDto);
        }
        return DEFAULT_LIST;
    }

    /**
     * 功能描述: 获取元素历史趋势
     * @Param:
     * @Return:
     * @Author: ZWC
     * @Date: 2024/9/26
     */
    public List<ElementCalculationVo> getElementTrend(IndexCalculationDto indexCalculationDto){
        //校验时间类型是否支持
        if (checkDateType(indexCalculationDto)) {

            return elementMonthDao.getElementHistoricalData(indexCalculationDto);
        }
        return DEFAULT_LIST;
    }

}
